﻿using System;
using System.Windows.Data;
using System.Windows;
using System.Windows.Media.Imaging;
using System.Globalization;
namespace InsuranceAdjuster.Helpers {

    /// <summary>
    /// Two way IValueConverter that lets you bind a property on a bindable object
    /// that can be an empty string value to a dependency property that should 
    /// be set to null in that case
    /// </summary>
    public class StringFormatValueConverter : IValueConverter {

        public StringFormatValueConverter() {
        }

        /// <summary>
        /// Converts the <paramref name="value"/> to a formatted string using the
        /// format specified in the constructor.
        /// </summary>
        /// <param name="value">The value to format.</param>
        /// <param name="targetType">The target output type (ignored).</param>
        /// <param name="parameter">Optional parameter (ignored).</param>
        /// <param name="culture">The culture to use in the format operation.</param>
        /// <returns>The formatted string</returns>
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            return string.Format(System.Globalization.CultureInfo.CurrentUICulture, (string)parameter, value);
        }

        /// <summary>
        /// Not supported.
        /// </summary>
        /// <param name="value">Ignored.</param>
        /// <param name="targetType">Ignored.</param>
        /// <param name="parameter">Ignored.</param>
        /// <param name="culture">Ignored.</param>
        /// <returns>No value is returned.</returns>
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            throw new NotSupportedException();
        }
    }

    //public sealed class ImageLoader : IValueConverter
    //{

    //    public string UriFormat
    //    {
    //        get;
    //        set;
    //    }

    //    #region Implementation of IValueConverter
    //    object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
    //    {
    //        string s = (string)value;
    //        if (String.IsNullOrEmpty(s))
    //        {
    //            return new BitmapImage();
    //        }

    //        string url = String.Format(UriFormat, value);
    //        return new BitmapImage(new Uri(Application.Current.Host.Source, url));
    //    }

    //    object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    //    {
    //        throw new NotImplementedException();
    //    }
    //    #endregion
    //}
}